/**
 *公共模块博客侧边栏
 * 好友日志加载 + 其无缝滚动 (2S 间隔 逐条滚动)
 *
 *@author：ppfyang(hzyang_fan@corp.netease.com)
 */

var _$$sideManager = {

    // 初始化
    _$reset: function () {

        // 获取滚动content
        this.__cnt = _$$p('.text');

        // 获取滚动内容
        this.__frdBlogs = _$$p('.mqe');

        // 渲染好友日志
        _$$p._$ajax({
            method: 'GET',
            url: 'http://fed.hz.netease.com/api/getFriendsLatestBlogs?userid=126770605',
            dataType: 'JSON',
            success: function (_json) {

                /* 好友日志注入 */
                var __htmlList = '', __htmlTpl = document.getElementById("mqe-blog").value;
                _json._$forEach(function (_blog) {
                    __htmlList += __htmlTpl._$inject(_blog);
                })
                this.__frdBlogs._$dom[0].innerHTML = __htmlList;

                /* 无缝滚动 */

                // 初始化margin值
                var __martop = 0;

                // 单条滚动高度
                var __blogH = 50;

                // 计时器
                var __timer = null;

                // 标记鼠标是否进入
                var __hover = false;

                // 容器高度
                var __cntH = this.__cnt._$style('height');

                // 滚动内容高度
                var __txH = this.__frdBlogs._$style('height');

                // 滚动
                // @param  {Number}    arg0 - 单条切换速度
                // @param  {Number}    arg1 - 单条切换间隔
                this.__rollText = function (_speed, _delay) {

                    this.__frdBlogs._$on('mouseover', function () {
                        __hover = true;
                    })

                    this.__frdBlogs._$on('mouseout', function () {
                        __hover = false;
                    })

                    this.__cnt._$dom[0].appendChild(this.__frdBlogs._$dom[0].cloneNode(true));

                    if (__cntH < __txH) {

                        this.__start = function () {

                            setTimeout(this.__roll, _speed);
                            if (!__hover) {

                                __martop++;
                                this.__frdBlogs._$style("marginTop", -__martop);
                            }
                        }._$bind(this)

                        this.__roll = function () {

                            if (__martop % __blogH != 0) {

                                __martop++;
                                if (__martop > __txH) {
                                    __martop = 0;
                                }
                                __timer = setTimeout(this.__roll, _speed);
                                this.__frdBlogs._$style("marginTop", -__martop);
                            } else {

                                clearTimeout(__timer);
                                setTimeout(this.__start, _delay);
                            }

                        }._$bind(this)

                        setTimeout(this.__start, _delay);
                    }

                }._$bind(this)

                // 开始滚动
                this.__rollText(20, 2000);

            }._$bind(this),

            error: function (_errorCode) {

            }
        })
    }
}

_$$p._$domReady(function () {
    // 初始化侧边日志
    _$$sideManager._$reset();
})